package com.xintoucloud.gsv.controller;


import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import com.xintoucloud.gsv.entity.SuperVision;
import com.xintoucloud.gsv.entity.SupervisionReply;
import com.xintoucloud.gsv.entity.SupervisionReplyState;
import com.xintoucloud.gsv.service.SuperVisionService;
import com.xintoucloud.gsv.service.SupervisionReplyService;
import com.xintoucloud.gsv.service.SupervisionReplyStateService;

@Controller@RequestMapping("/svr")
public class SupervisionReplyController {
	
	@Autowired
	private SupervisionReplyService supervisionReplyService;
	
	@Autowired
	private SuperVisionService superVisionService;
	
	@Autowired
	private SupervisionReplyStateService supervisionReplyStateService;
	
	@RequestMapping("/allsvr")
	public String allsvr(Model m) {
		m.addAttribute("allsvr", supervisionReplyService.allsvr());
		return null;
	}
	
	@RequestMapping("/theSvidsvr")
	public String theSvidsvr(HttpServletRequest request,Model m) {
		int svid = Integer.parseInt(request.getParameter("svid"));
		m.addAttribute("theSvidsvr", supervisionReplyService.theSvidsvr(svid));
		return null;
	}

	@PostMapping("dirupdate")
	public String dirupdate(HttpServletRequest request,int svid) {
		/*
		 *  部门专员处理该督查事件
		 *创建该事件的处理回复记录
		 *  添加部门专员处理回复
		 *  回复记录状态为1（正常审核状态）
		 **/
		SupervisionReply svr = new SupervisionReply();
		SuperVision thesv = superVisionService.getSuperVision(svid);
		SupervisionReplyState thesvrs = supervisionReplyStateService.getSvrs(1);
		
		svr.setDirector(request.getParameter("director"));
		svr.setSuperVision(thesv);
		svr.setSvrs(thesvrs);
		supervisionReplyService.save(svr);
		/*
		 * 更改该督办事件状态
		 *由于是部门专员处理
		 * 状态变更为4
		 * */
		
		superVisionService.updateStid(4, svid);	
		
		return "redirect:../toSuperVisionDirectReply";
	}
	
	@PostMapping("dutyNewReply")
	public String dutyNewReply(HttpServletRequest request,int svid) {
		/*
		 *  部门正职直接处理该督查事件
		 *创建该事件的处理回复记录
		 *  添加默认的部门专员回复 和 部门正职处理回复		 
		 *  回复记录状态为1（正常审核状态）
		 **/
		SupervisionReply svr = new SupervisionReply();
		SuperVision thesv = superVisionService.getSuperVision(svid);
		SupervisionReplyState thesvrs = supervisionReplyStateService.getSvrs(1);
		svr.setDirector("该督办事件由部门正职直接处理");
		svr.setSuperVision(thesv);
		svr.setDutyidea(request.getParameter("dutyidea"));
		svr.setSvrs(thesvrs);
		supervisionReplyService.save(svr);
		/*
		 * 更改该督办事件状态
		 *由于是部门正职直接处理 相当于部门正职审核通过
		 * 状态变更为5
		 * */
		
		superVisionService.updateStid(5, svid);	
		
		return "redirect:../toSuperVisionDutyReply";
	}
	
	@PostMapping("dutyupdate")
	public String dutyupdate(HttpServletRequest request,int svid) {
		/*
		 * 获取该督办事件下（同svid）的所有历史回复记录
		 * 取得当前流程中的回复记录id（排除以前驳回的同svid记录）
		 * */
		List<SupervisionReply> svrs = supervisionReplyService.theSvidsvr(svid);
		int rid = svrs.get(0).getRid();
		/*
		 * 获取审核意见（yesorno为“1”是同意 “2”是驳回）
		 * 更改该督办事件状态
		 * 如果审核通过 添加部门正职的审核回复 督办事件状态变更为5 回复记录状态依然为1（正常审核状态）
		 * 如果审核驳回 添加部门正职的驳回原因 督办事件状态变更为3 回复记录状态变更为2（部门正职驳回）
		 * */
		String yesorno = request.getParameter("yesorno");
		if(yesorno.equals("1")) {
			supervisionReplyService.dutyupdate(request.getParameter("dutyidea"), rid,1);
			superVisionService.updateStid(5, svid);	
		}else if(yesorno.equals("2")) {
			supervisionReplyService.dutyupdate(request.getParameter("dutyidea"), rid,2);
			superVisionService.updateStid(3, svid);	
		}
		return "redirect:../toSuperVisionWaitDutyConfirm";
	}
	
	@PostMapping("leaderupdate")
	public String leaderupdate(HttpServletRequest request,int svid) {
		/*
		 * 获取该督办事件下（同svid）的所有历史回复记录
		 * 取得当前流程中的回复记录（排除以前驳回的同svid记录）
		 */
		List<SupervisionReply> svrs = supervisionReplyService.theSvidsvr(svid);
		int rid = svrs.get(0).getRid();
		/*
		 * 获取审核意见（yesorno为“1”是同意 “2”是驳回）
		 * 更改该督办事件状态
		 * 如果审核通过 添加分管领导的审核回复 督办事件状态变更为5 回复记录状态依然为1（正常审核状态）
		 * 如果审核驳回 添加分管领导的驳回原因 督办事件状态变更为3 回复记录状态变更为3（分管领导驳回）
		 * */
		String yesorno = request.getParameter("yesorno");
		if(yesorno.equals("1")) {
			supervisionReplyService.leaderupdate(request.getParameter("leaderidea"), rid,1);
			superVisionService.updateStid(6, svid);	
		}else if(yesorno.equals("2")) {
			supervisionReplyService.leaderupdate(request.getParameter("leaderidea"), rid,3);
			superVisionService.updateStid(3, svid);	
		}
		return "redirect:../toSuperVisionLeaderReply";
		
	}
	
	@PostMapping("visionupdate")
	public String visionupdate(HttpServletRequest request,int svid) {
		/*
		 * 获取该督办事件下（同svid）的所有历史回复记录
		 * 取得当前流程中的回复记录（排除以前驳回的同svid记录）
		 * 添加督查工作人员的审核回复
		 * */
		List<SupervisionReply> svrs = supervisionReplyService.theSvidsvr(svid);
		int rid = svrs.get(0).getRid();
		/*
		 * 获取审核意见（yesorno为“1”是同意 “2”是驳回）
		 * 更改该督办事件状态
		 * 如果审核通过 添加督办人员的审核回复 督办事件状态变更为5 回复记录状态依然为5（办结归档状态）
		 * 如果审核驳回 添加督办人员的驳回原因 督办事件状态变更为3 回复记录状态变更为4（分管领导驳回）
		 * */
		String yesorno = request.getParameter("yesorno");
		if(yesorno.equals("1")) {
			supervisionReplyService.visionupdate(request.getParameter("visionidea"), rid,5);
			superVisionService.updateStid(7, svid);	
		}else if(yesorno.equals("2")) {
			supervisionReplyService.visionupdate(request.getParameter("visionidea"), rid,4);
			superVisionService.updateStid(3, svid);	
		}
		return "redirect:../toSuperVisionVisionReply";
	}
	
}
